﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MemoryDuosControl;

namespace MemoryDuosInterfaz
{
    public partial class UsarPowerUp : Form
    {
        private PartidaMultijugador partida;
        private List<Coordenadas> destapadas;
        private Coordenadas c1;

        public UsarPowerUp()
        {
            InitializeComponent(); ActualizarLabelMonedas();
            ToolTip tt1 = new ToolTip();
            tt1.SetToolTip(label1, "Al adquirir FastPair, podremos realizar automáticamente una pareja. Precio: 3 monedas ");
            this.Controls.Add(label1);
            ToolTip tt2 = new ToolTip();
            tt2.SetToolTip(label2, "Al adquirir littleHelp, podremos completar una pareja levantando previamene una carta del tablero. Precio: 2 monedas");
            this.Controls.Add(label2);
        }

        private void ActualizarLabelMonedas()
        {
            labelMonedasDisponibles.Text = Controlador.Instance.UsuarioActual.Monedas + "";
        }

        public void setPartida(PartidaMultijugador partida)
        {
            this.partida = partida;
        }

        public void setCoordenada(Coordenadas c1)
        {
            this.c1 = c1;
        }

        public void setDestapadas(List<Coordenadas> destapadas)
        {
            this.destapadas = destapadas;
        }

        private void FastPair(object sender, EventArgs e)
        {
            if (Controlador.Instance.UsuarioActual.Monedas >= 3)
            {
                if (partida.tablero.destapadas != null && partida.tablero.destapadas.Count == 1)
                    partida.tablero.TaparCarta(partida.tablero.destapadas.ElementAt(0));
                bool EsUsuario1 = Controlador.Instance.UsuarioActual.Nick.Equals(Controlador.Instance.PartidaActual.Nick_1);
                //partida.tablero.TaparCarta(partida.tablero.destapadas.ElementAt(0));
                partida.destaparPareja();
                partida.tablero.parejasConsecutivas++;
                partida.tablero.CalcularPuntuacion();
                Controlador.Instance.UsuarioActual.ActualizarMonedas(Convert.ToInt32(-3));
                Controlador.Instance.UsuarioActual.UtilizarPowerUP(Controlador.Instance.PartidaActual.Codigo);
                ActualizarMonedasPartida(EsUsuario1);
                labelMonedasDisponibles.Text = Controlador.Instance.UsuarioActual.Monedas + "";
                this.Close();
            }
            else
            {
                MessageBox.Show("No dispone de monedas suficientes", "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void ComprarMonedas_Click(object sender, EventArgs e)
        {
            ComprarMonedas comprar = new ComprarMonedas();
            comprar.ShowDialog();
        }

        private void littleHelp(object sender, EventArgs e)
        {
            if (Controlador.Instance.UsuarioActual.Monedas >= 2 && partida.tablero.destapadas.Count == 1)
            {
                bool EsUsuario1 = Controlador.Instance.UsuarioActual.Nick.Equals(Controlador.Instance.PartidaActual.Nick_1);
                partida.littleHelp();
                partida.tablero.parejasConsecutivas++;
                partida.tablero.CalcularPuntuacion();
                Controlador.Instance.UsuarioActual.UtilizarPowerUP(Controlador.Instance.PartidaActual.Codigo);
                ActualizarMonedasPartida(EsUsuario1);
                Controlador.Instance.UsuarioActual.ActualizarMonedas(Convert.ToInt32(-2));
                labelMonedasDisponibles.Text = Controlador.Instance.UsuarioActual.Monedas + "";
                this.Close();
            }
            else if (partida.tablero.destapadas.Count != 1)
            {
                MessageBox.Show("Para aplicar este PowerUp, destape una carta", "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("No dispone de monedas suficientes", "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private static void ActualizarMonedasPartida(bool usuario1)
        {
            if (usuario1)
            {
                Controlador.Instance.PartidaActual.Powerup_1 = true;
            }
            else
            {
                Controlador.Instance.PartidaActual.Powerup_2 = true;
            }
        }

        private void UsarPowerUp_Activated(object sender, EventArgs e)
        {
            ActualizarLabelMonedas();
        }
    }
}
